// union type ---联合类型：表示取值可以为多种类型中的一个


// 需求1：定义一个函数，传入数字或者字符串数字

function getStr(str: string | number) {

}

getStr('111')
getStr(123)


// 需求2:定义一个函数得到参数的长度

function getStrLength(str: string | number): number {

  // return str.toString().length

  // 错误写法
  // if(str.length){
  //   return str.length
  // }else{
  //   return str.toString().length
  // }

  // 类型断言 <>剪括号语法或者as语法

  // 通过类型断言告诉编译器，程序员知道自己在干什么，类型断言就好比其他语言中的类型转换，但是不进行特殊的语法检查于结构，
  // 它没有运行的影响，只在编译极端起作用，
  // ts会假设程序员已经进行了必要的检测

  if ((<string>str).length) {
    return (str as string).length
  } else {
    return str.toString().length
  }

}


console.log(getStrLength('123'))
console.log(getStrLength(12345))


// 类型推断---没有明确指定类型的时候会进行一额类型推断
let txt = 100
// tst = '111'
console.log(txt)

//

let txt2//any类型
txt2 = 'haha'
txt2 = 111

console.log(txt2)

